Trilium 서버 주소인 trilium.yourdomain.com에 DNS A 레코드를 설정한 환경을 가정합니다. 아래 도메인과 버전 및 경로는 실제 환경에 맞게 바꾸세요.

컨테이너 준비

 docker pull triliumnext/notes:[VERSION]
 docker create --name trilium -t -p 127.0.0.1:8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:[VERSION]

Apache 프록시 설정

HTTPS와 HTTP 프록시 및 WebSocket 모듈을 활성화합니다.

 a2enmod ssl
 a2enmod proxy
 a2enmod proxy_http
 a2enmod proxy_wstunnel

인증서를 발급합니다. 예제 도메인은 실제 서비스 주소로 바꾸세요. 원문은 독립 실행 방식으로 발급하고 생성된 인증서 경로를 기록하도록 안내합니다.

 sudo certbot certonly -d trilium.mydomain.com

가상 호스트 설정 파일을 만듭니다. apachectl -S로 서버 설정 위치를 확인할 수 있습니다.

 sudo nano /etc/apache2/sites-available/trilium.yourdomain.com.conf

다음은 원문의 설정 조각입니다. 완전한 가상 호스트 파일은 아니므로 기존 HTTP와 HTTPS VirtualHost 블록에 맞게 구성해야 합니다.

 
     ServerName http://trilium.yourdomain.com
     RewriteEngine on
         RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
 
 
     ServerName https://trilium.yourdomain.com
     RewriteEngine On
     RewriteCond %{HTTP:Connection} Upgrade [NC]
     RewriteCond %{HTTP:Upgrade} websocket [NC]
     RewriteRule /(.*) ws://localhost:8080/$1 [P,L]
     AllowEncodedSlashes NoDecode
     ProxyPass / http://localhost:8080/ nocanon
     ProxyPassReverse / http://localhost:8080/
     SSLCertificateFile /etc/letsencrypt/live/trilium.yourdomain.com/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/trilium.yourdomain.com/privkey.pem
     Include /etc/letsencrypt/options-ssl-apache.conf
 

sudo a2ensite trilium.yourdomain.com.conf로 활성화하고 설정을 검사한 뒤 sudo systemctl reload apache2로 다시 불러옵니다.

부팅 시 컨테이너 시작

/lib/systemd/system/trilium.service에 다음 서비스 정의를 작성하는 예시입니다.

 [Unit]
 Description=Trilium 서버
 Requires=docker.service
 After=docker.service

 [Service]
 Restart=always
 ExecStart=/usr/bin/docker start -a trilium
 ExecStop=/usr/bin/docker stop -t 2 trilium

 [Install]
 WantedBy=local.target

서비스 설정을 다시 읽고 활성화한 뒤 시작합니다.

 sudo systemctl daemon-reload
 sudo systemctl enable trilium.service
 sudo systemctl start trilium.service